文章目录
  1. 1. Oracle 日期加减运算 - CSDN博客
  2. 2. Oracle 日期加减运算

Oracle 日期加减运算 - CSDN博客

oracle 时间间隔

Oracle 日期加减运算

– Start

我们都知道数字可以进行加、减、乘、除等运算。那么,日期可不可以呢?答案是,日期只能进行加、减运算。

在开始操作日期之前,我们先了解一下 Oracle 支持哪些日期数据类型,如下所示:

  1. DATE
  2. TIMESTAMP
  3. TIMESTAMPWITHTIME ZONE  
  4. TIMESTAMPWITHLOCALTIME ZONE  
  5. INTERVAL DAYTOSECOND
  6. INTERVAL YEARTOMONTH
DATE
TIMESTAMP
TIMESTAMP WITH TIME ZONE
TIMESTAMP WITH LOCAL TIME ZONE
INTERVAL DAY TO SECOND
INTERVAL YEAR TO MONTH

下面,我们先看一个简单的例子吧,如下所示:

  1. select SYSDATE + INTERVAL ‘1’DAY, SYSDATE - INTERVAL ‘2’DAYfrom dual;  
  2. select SYSTIMESTAMP + INTERVAL ‘1’DAY, SYSTIMESTAMP - INTERVAL ‘2’DAYfrom dual;

  

select SYSDATE + INTERVAL '1' DAY, SYSDATE - INTERVAL '2' DAY from dual;
select SYSTIMESTAMP + INTERVAL '1' DAY, SYSTIMESTAMP - INTERVAL '2' DAY from dual;

如上所示,我们可以通过给日期加减一个时间间隔来计算日期,下面是更多的例子。

  1. 日期+ 1 年          SYSDATE + INTERVAL ‘1’YEAR
  2. 日期+ 1 月          SYSDATE + INTERVAL ‘1’MONTH
  3. 日期+ 1 日          SYSDATE + INTERVAL ‘1’DAY
  4. 日期+ 1 时          SYSDATE + INTERVAL ‘1’HOUR
  5. 日期+ 1 分          SYSDATE + INTERVAL ‘1’MINUTE
  6. 日期+ 1 秒          SYSDATE + INTERVAL ‘1’SECOND
  7. 日期+ 1 日1 时1 分    SYSDATE + INTERVAL ‘1 1:1’DAYTOMINUTE
日期+ 1 年          SYSDATE + INTERVAL '1' YEAR
日期+ 1 月          SYSDATE + INTERVAL '1' MONTH
日期+ 1 日          SYSDATE + INTERVAL '1' DAY
日期+ 1 时          SYSDATE + INTERVAL '1' HOUR
日期+ 1 分          SYSDATE + INTERVAL '1' MINUTE
日期+ 1 秒          SYSDATE + INTERVAL '1' SECOND
日期+ 1 日1 时1 分    SYSDATE + INTERVAL '1 1:1' DAY TO MINUTE

如果计算的是 DATE 类型,我们还可以采用如下的方式。

  1. DATE+ 1 日          SYSDATE + 1  
  2. DATE+ 1 时          SYSDATE + 1/(1*24)  
  3. DATE+ 1 分          SYSDATE + 1/(12460)  
  4. DATE+ 1 秒          SYSDATE + 1/(12460*60)  
  5. DATE+ 1 日1 时1 分    SYSDATE + 1 + 1/(124) + 1/(124*60)

  

DATE+ 1 日          SYSDATE + 1
DATE+ 1 时          SYSDATE + 1/(1*24)
DATE+ 1 分          SYSDATE + 1/(1*24*60)
DATE+ 1 秒          SYSDATE + 1/(1*24*60*60)
DATE+ 1 日1 时1 分    SYSDATE + 1 + 1/(1*24) + 1/(1*24*60)

有时候,我们需要知道两个日期之间相隔多少天,也就是说求日期之间的时间间隔,该怎么办呢?我们很自然的想到把两个日期相减,如下所示:

  1. select (date’2015-04-10’ - date’2014-03-11’) from dual  
  2. select (date’2015-04-10’ - date’2014-03-11’) YEARTOMONTHfrom dual  
  3. select (date’2015-04-10’ - date’2014-03-11’) DAY(3) TOSECONDfrom dual  
  4. select (timestamp’2015-04-10 14:52:19.000’ - timestamp’2014-03-11 13:55:29.000’) from dual  
  5. select (timestamp’2015-04-10 14:52:19.000’ - timestamp’2014-03-11 13:55:29.000’) YEARTOMONTHfrom dual  
  6. select (timestamp’2015-04-10 14:52:19.000’ - timestamp’2014-03-11 13:55:29.000’) DAY(3) TOSECONDfrom dual

  

select (date '2015-04-10' - date '2014-03-11') from dual
select (date '2015-04-10' - date '2014-03-11') YEAR TO MONTH from dual
select (date '2015-04-10' - date '2014-03-11') DAY(3) TO SECOND from dual

select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') from dual
select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') YEAR TO MONTH from dual
select (timestamp '2015-04-10 14:52:19.000' - timestamp '2014-03-11 13:55:29.000') DAY(3) TO SECOND from dual

一旦得到了时间间隔,我们就可以通过 EXTRACT 函数抽出时间间隔的组成部分。

  1. select EXTRACT(YEARFROM (date’2015-04-10’ - date’2014-03-11’) YEARTOMONTH) from dual  
  2. select EXTRACT(MONTHFROM (date’2015-04-10’ - date’2014-03-11’) YEARTOMONTH) from dual  
  3. select EXTRACT(DAYFROM (date’2015-04-10’ - date’2014-03-11’) DAY(3) TOSECOND) from dual

  

select EXTRACT(YEAR FROM (date '2015-04-10' - date '2014-03-11') YEAR TO MONTH) from dual
select EXTRACT(MONTH FROM (date '2015-04-10' - date '2014-03-11') YEAR TO MONTH) from dual
select EXTRACT(DAY FROM (date '2015-04-10' - date '2014-03-11') DAY(3) TO SECOND) from dual

我们还可以抽出以下部分。1. YEAR
2. MONTH
3. DAY
4. HOUR
5. MINUTE
6. SECOND
7. TIMEZONE_HOUR  
8. TIMEZONE_MINUTE  
9. TIMEZONE_REGION  
10. TIMEZONE_ABBR  

YEAR
MONTH
DAY
HOUR
MINUTE
SECOND
TIMEZONE_HOUR
TIMEZONE_MINUTE
TIMEZONE_REGION
TIMEZONE_ABBR

– 更多参见:Oracle SQL 精萃

– 声明:转载请注明出处

– Last edited on 2015-06-19

– Created by ShangBo on 2015-03-10

– End

文章目录
  1. 1. Oracle 日期加减运算 - CSDN博客
  2. 2. Oracle 日期加减运算